// 配置中心应用管理API接口
import axios from 'axios'

// 创建axios实例
const api = axios.create({
  baseURL: 'http://localhost:10002',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json'
  }
})

// 请求拦截器
api.interceptors.request.use(
  config => {
    // 可以在这里添加token等认证信息
    // config.headers.Authorization = `Bearer ${getToken()}`
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
api.interceptors.response.use(
  response => {
    const { data } = response
    // 根据实际后端响应，成功时code为200
    if (data.code === 200) {
      // 格式化时间函数
      const formatTime = (timestamp) => {
        if (!timestamp) return ''
        const date = new Date(timestamp)
        return date.toLocaleString('zh-CN', {
          year: 'numeric',
          month: '2-digit',
          day: '2-digit',
          hour: '2-digit',
          minute: '2-digit',
          second: '2-digit'
        })
      }
      
      // 格式化单个数据项
      const formatItem = (item) => ({
        id: item.id,
        appName: item.appName,
        remark: item.remark || '暂无备注',
        createTime: formatTime(item.utcInsert),
        updateTime: formatTime(item.utcUpdate)
      })
      
      // 判断是列表数据还是详情数据
      if (data.data.data && Array.isArray(data.data.data)) {
        // 列表数据处理
        const records = data.data.data.map(formatItem)
        return {
          code: 0,
          data: {
            records: records,
            total: data.data.total || 0,
            current: data.data.page || 1,
            size: data.data.size || 10
          },
          message: data.message || 'SUCCESS'
        }
      } else if (data.data) {
        // 详情数据处理
        return {
          code: 0,
          data: formatItem(data.data),
          message: data.message || 'SUCCESS'
        }
      } else {
        return {
          code: 0,
          data: null,
          message: data.message || 'SUCCESS'
        }
      }
    } else {
      // 处理业务错误
      throw new Error(data.message || '请求失败')
    }
  },
  error => {
    // 处理HTTP错误
    console.error('API请求错误:', error)
    throw error
  }
)

/**
 * 分页查询配置中心应用列表
 * @param {Object} params 查询参数
 * @param {number} params.pageNum 页码
 * @param {number} params.pageSize 每页大小
 * @param {string} params.param 搜索参数
 * @returns {Promise}
 */
export const getConfigAppPage = (params) => {
  return api.post('/config-app/page', params)
}

/**
 * 获取配置中心应用详情
 * @param {Object} params 查询参数
 * @param {number} params.id 应用ID
 * @returns {Promise}
 */
export const getConfigAppDetail = (params) => {
  return api.post('/config-app/get', params)
}

/**
 * 新增配置中心应用
 * @param {Object} entity 应用实体
 * @param {string} entity.appName 应用名称
 * @param {string} entity.remark 备注
 * @returns {Promise}
 */
export const saveConfigApp = (entity) => {
  return api.post('/config-app/save', entity)
}

/**
 * 更新配置中心应用
 * @param {Object} entity 应用实体
 * @param {number} entity.id 应用ID
 * @param {string} entity.appName 应用名称
 * @param {string} entity.remark 备注
 * @returns {Promise}
 */
export const updateConfigApp = (entity) => {
  return api.post('/config-app/update', entity)
}

/**
 * 删除配置中心应用
 * @param {Object} params 删除参数
 * @param {Array<number>} params.ids 应用ID数组
 * @returns {Promise}
 */
export const deleteConfigApp = (params) => {
  return api.post('/config-app/delete', params)
}

export default {
  getConfigAppPage,
  getConfigAppDetail,
  saveConfigApp,
  updateConfigApp,
  deleteConfigApp
}